Blog

This is a short note on developing extensions for the JBoss AS 7 server. It took me quite some time to pinpoint the problem

JBAS014775: New missing/unsatisfied dependencies

to be actually a problem with my extension parser.

Here are the details ...

The Problem

When I installed my extension for JBoss AS 7 for the first time, the system answered with the following message:

JBAS014775:    New missing/unsatisfied dependencies:
      service jboss.binding.http (missing) dependents: [service jboss.web.connector.http]
      service jboss.binding.management-http (missing) dependents: [service jboss.serverManagement.controller.management.http]
      service jboss.binding.management-native (missing) dependents: [service jboss.remoting.server.management]
      service jboss.binding.osgi-http (missing) dependents: [service jboss.osgi.as.framework.bootstrap]
      service jboss.binding.remoting (missing) dependents: [service jboss.remoting.server.remoting-connector]
      service jboss.binding.txn-recovery-environment (missing) dependents: [service jboss.txn.ArjunaRecoveryManager]
      service jboss.binding.txn-status-manager (missing) dependents: [service jboss.txn.ArjunaRecoveryManager]
      service jboss.outbound-socket-binding.mail-smtp (missing) dependents: [service jboss.mail-session.java:jboss/mail/Default]
      service jboss.socket-binding-manager (missing) dependents: [service jboss.serverManagement.controller.management.http,
                                     service jboss.remoting.server.management, service jboss.remoting.server.remoting-connector]

After stopping the server I saw this:

JBAS014776:    Newly corrected services:
      service jboss.binding.http (new available)
      service jboss.binding.management-http (new available)
      service jboss.binding.management-native (new available)
      service jboss.binding.osgi-http (new available)
      service jboss.binding.remoting (new available)
      service jboss.binding.txn-recovery-environment (new available)
      service jboss.binding.txn-status-manager (new available)
      service jboss.outbound-socket-binding.mail-smtp (new available)
      service jboss.socket-binding-manager (new available)

I search for quite a while, trying to figure out, what caused the dependency problem. I even posted a question to the JBoss Community: Newbie to extensions: JBAS014775: New missing/unsatisfied dependencies.

As I - quite accidentally - moved the subsystem declaration within the standalone.xml some positions up, I found out, that the extension configuration parser did not read all XML passed to it properly. The dangling end element of my configuration seemed to confused the whole parsing process. So the parser skipped the rest of the configuration file, including the socket bindings. Hence the error message. :-)

If I would not have registered my extension as the last subsystem, I might have found the problem much earlier. The error message is much more obvious in this case.

Conclusion

If you happen to encounter JBAS014775 and/or JBAS014776, while you are installing your own extension, check your extension configuration parser.

Tip: During development, you may want to add your subsystem not at the very end.

I hope this shot helps saving someone's time ... ;-)

 

The smartics Maven Enforcer Rules have been released with version 0.2.0.

This version provides a new rule called NoSnapshotsInDependencyManagementRule, which - you might already have guessed - checks that there are no snapshot dependencies in the dependency management block of a Maven POM.

The Problem

If you are building with Maven, it is easy to make a release of project with snapshot dependencies. Not in the dependencies block, the Maven Release Plugin takes care of that, but in the dependency management block (and unfortunately in some other places, like the skin artifact for building the Maven site).

The Solution

This rule for the Maven Enforcer Plugin checks that no dependencies listed in the management block are snapshots. So, especially for BOMs, you will never again have a release that fails to have set the dependency management information to proper releases.